package br.com.estudosjsf.leilao.managedbean;

import java.io.Serializable;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.inject.Named;

import br.com.estudosjsf.leilao.domain.Anuncio;
import br.com.estudosjsf.leilao.ejb.AnuncioService;

@Named
@RequestScoped
public class AnuncioBean implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	@EJB
	private AnuncioService anuncioService;
	
	@Inject
	private ModeloBean modeloBean;
	
	@Inject
	private Anuncio anuncio;
	
	private Map<String, String> listaCidade;
	private List<Anuncio> listaAnuncios;
	
	
	public String listaAnunciosCadastrados(){
		listaAnuncios = anuncioService.listaAnuncio();
		return "listarAnuncios.xhtml";
	}
	
	public String cadastraAnuncio(){
		anuncio.setModelo(modeloBean.getModelo());
		anuncio.setVendido(false);
		
		if(!anuncio.getPrecoFixo()){
			anuncio.setValorLanceAtual(100.0);
		}
		
		anuncioService.salvaAnuncio(anuncio);
		//Nenhuma msg de sucesso, a pg ja mostra.
		
		return "cadastrarAnuncioPasso3.xhtml";
	}
	
	public void atualizaAnuncio(){
		//recarrega o anuncio do banco, pois pode ser mudado o valor do ultimo lance
		anuncio = anuncioService.recuperaAnuncioPeloId(anuncio.getId());
	}
	
	public void efetuaCompra(){
		anuncio.setVendido(true);
		anuncioService.atualizaAnuncio(anuncio);
	}
	
	public void efetuaLance(){
		anuncio.setValorLanceAtual(anuncio.getValorLanceAtual() + 100.0);
		anuncioService.atualizaAnuncio(anuncio);
	}
	
	public void atualizaCidadesPelaUF(){
		listaCidade = new LinkedHashMap<String, String>();
		
		if(anuncio.getUf() != null){ //selecionou CE
			listaCidade.put("Fortaleza", "Fortaleza");
			listaCidade.put("Juazeiro do Norte","Juazeiro do Norte");
		}
	}
	
	public Anuncio getAnuncio() {
		return anuncio;
	}


	public void setAnuncio(Anuncio anuncio) {
		this.anuncio = anuncio;
	}


	public Map<String, String> getListaCidade() {
		return listaCidade;
	}


	public void setListaCidade(Map<String, String> listaCidade) {
		this.listaCidade = listaCidade;
	}


	public List<Anuncio> getListaAnuncios() {
		return listaAnuncios;
	}


	public void setListaAnuncios(List<Anuncio> listaAnuncios) {
		this.listaAnuncios = listaAnuncios;
	}
}